#include <QtGui>

#include "log.h"

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include "plateaurisqgraphics.h"

#include "dialognewpartie.h"
#include "dialogserveur.h"
#include "formjoueurinfo.h"
#include "formchat.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // Configuration de la class de log
    Log::setMessageLog(ui->widgetLog);
    Log::setStatusBar(ui->statusBar);

    // Chargement du plateau de jeu
    ui->widgetBoard->loadBoard("board_original");


    setWindowTitle(QApplication::applicationName());

    server = NULL;
}

MainWindow::~MainWindow()
{
    delete ui;

    if ( server != NULL )
        delete server;
}


void MainWindow::on_action_Afficher_fleche_changed()
{
    ui->widgetBoard->hideFleche(!ui->action_Afficher_fleche->isChecked());
}

void MainWindow::on_action_Quitter_triggered()
{
    QWidget::close();
}

void MainWindow::on_actionA_propos_triggered()
{
    //qDebug() << QApplication::applicationVersion() << QApplication::applicationName();
    QMessageBox::about(this, trUtf8("A propos de %1").arg(QApplication::applicationName()),
            trUtf8("Version: %1").arg(QApplication::applicationVersion()));
}

void MainWindow::on_actionEdition_plateau_triggered()
{
    ui->widgetBoard->moveEtat(ui->actionEdition_plateau->isChecked());
}

void MainWindow::on_actionAfficher_possition_tat_triggered()
{
    //qDebug() << ui->widgetBoard->printMapPos();
}

void MainWindow::on_widgetBoard_nouveauJoueur(Joueur *j)
{
    FormJoueurInfo *jform = new FormJoueurInfo(j);
    this->ui->verticalLayout_5->addWidget(jform);
    ui->widgetChat->addUsers(j);

}

void MainWindow::on_widgetBoard_supprimerJoueur(Joueur *j)
{
    for(int i=0; i < this->ui->verticalLayout_5->count(); ++i){
        FormJoueurInfo *jform = (FormJoueurInfo *)this->ui->verticalLayout_5->itemAt(i)->widget();
        if ( jform->getJoueur() == j ){
            this->ui->verticalLayout_5->removeWidget(jform);
            delete jform;
            break;
        }
    }
}

void MainWindow::on_action_Nouvelle_partie_triggered()
{
    DialogNewPartie diag(this);
    if (diag.exec() != 1 ){
        return;
    }
    if ( server != NULL ){
        //server->fermeServeur();
        delete server;
        server = NULL;
    }

    QString ip = "127.0.0.1";
    if(diag.isServeur()){
        server = new DialogServeur("board_original", diag.getNbMaxJoueur(), diag.getServeurPort());
        server->show();
    }else{
        ip = diag.getServeurIp();

    }

    ui->widgetBoard->setJoueurNom(diag.getJoueurNom());
    ui->widgetBoard->connexion(ip, diag.getServeurPort());

    //ui->widgetBoard->assigneEtat();
}


void MainWindow::on_actionGo_triggered()
{
    ui->widgetBoard->sendAssignerEtats();
}

void MainWindow::on_action_Etape_suivante_triggered()
{
    if (ui->widgetBoard->getPlateau()->getMoi() != NULL )
    {
        ui->widgetBoard->ChangeStatut();
    }
}


void MainWindow::on_action_Voir_Mission_triggered()
{
    if (ui->widgetBoard->getPlateau()->getMoi()  != NULL )
    {
        ui->widgetBoard->AfficheMission(); // affiche mission.
    }
}


